package chapter05;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;
import java.util.UUID;

public class Java08_Object_Util {

    public static void main(String[] args) throws Exception {
        System.out.println(StringUtil.isEmpty(null));   // true
        System.out.println(StringUtil.isEmpty("")); // ture
        System.out.println(StringUtil.isEmpty("      "));   // true
        System.out.println(StringUtil.isEmpty("abc"));  // false

        System.out.println("-----------------------");

        System.out.println(StringUtil.makeString());
        System.out.println(StringUtil.makeString("abcdefg123456", 6));

        System.out.println("-----------------------");

        System.out.println(StringUtil.transform("你好","UTF-8","ISO8859-1"));

        System.out.println("-----------------------");

        System.out.println(StringUtil.formatDate(new Date(),"yyyy-MM-dd"));
        System.out.println(StringUtil.parseDate("2025-03-05","yyyy-MM-dd"));


    }

}
// 字符串工具类
/*
    1.工具类不应该创建对象才能使用，可以直接使用类中的属性和方法，一般声明为静态的
    2.工具类对外提供的属性和方法应该是公共的
    3.为方便开发应该提供丰富的方法和属性
 */
class StringUtil {
    //  TODO 非空判断
    public static boolean isEmpty(String str) {
        /*
            1.如果字符串为null，为空
            2.如果字符串为空串，为空
            3.如果字符串全为空格，为空
         */
        if (str == null || "".equals(str.trim())) {
            return true;
        }
        return false;
    }

    public static boolean isNotEmpty(String str) {
        return !isEmpty(str);
    }
    // TODO 生成随机字符串
    public static String makeString() {
        return UUID.randomUUID().toString();
    }
    public static String makeString(String from, int length) {
        if (length < 1) {
            return "";
        } else {
            char[] chars = from.toCharArray();
            StringBuilder str = new StringBuilder();
            for (int i = 0; i < length; i++) {
                Random random = new Random();
                int j = random.nextInt(chars.length);
                char c = chars[j];
                str.append(c);
            }
            return str.toString();
        }
    }

    // TODO 转换字符串:
    // eg:ISO8859-1 转为 UTF-8
    public static String transform(String source, String encodeFrom, String encodeTo) throws Exception {
        byte[] bytes = source.getBytes(encodeFrom);
        return new String(bytes, encodeTo);
    }

    // TODO 日期转换
    public static Date parseDate(String dateString, String format) throws Exception{
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        return sdf.parse(dateString);
    }

    public static String formatDate(Date date, String format) throws Exception{
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        return sdf.format(date);
    }

}

